package com.nenude.corejava.ch5;
/**
 * <pre>
 * 
 * 文档注释（API注释）：用于生成API文档或在编码时可以进行使用提示
 *                文档注释支持使用部分html网页标签和css 样式
 * java 类方法的定义：
 * 1、实例方法与类方法         
 * 2、有参方法和无参方法
 * 3、有返回值返回值方法和无返回值方法
 * 4、方法的定义和方法的使用
 * 5、基本数据类型和引用数据类型
 *       
 * </pre>
 * @author admin
 */

/**
 * @author huag.hailing
 * @create time:2019/08/02
 * 
 */

//单行注释
public class MethodsClass {
	 
	//方法的重载与访问修饰符无关，static 修饰符也无关
		//使用static 修饰的方法叫类方法或静态方法；类方法可以直接通过类名进行调用（不需要实例化对象）
		public static void printColor(char color){//在定义方法时，参数列表上的参数称为形式参数（形参）
			System.out.println(color);
		}
	
    //设计一个方法接受两个整数，进行加法计算，并返回和；
	//在方法定义时，如果声明了返回值类型，则必须在方法体中使用return 语句返回一个类型匹配的值
	public int add(int a,int b){
		
		//方法一：
		//如果方法存在多个分支，则每个分支都需要使用return 语句返回一个值
	/*	if(a==0 && b==0){
			return 0;
		}else {
			int c=a+b;
			return c;
		}*/
		
		//方法二：
		//当方法内部需要返回不同值时，可以使用多个return 语句在不同情况下返回不同的值
		//也可以根据不同的情况，修改统一的返回变量的值；在方法的后面使用同一个return 与句返回变量值
		int ret= 0;
		if(a==0 && b==0){
			ret=-1;
		}else {
			ret=a+b;
		}
		return ret;
	}
	
	//方法可以没有参数，也没有返回值，但方法没有返回值时，需要使用void进行声明
	//void 关键词void 类型，表示没有数据类型
	//private 是访问修饰符号，表示私有的意思；使用private 修饰的实例变量或方法，只能在该类内部使用
	//java的访问修饰符号共有四类：public（公有的）；protected 受保护的；default 默认（不写）；private 私有的
	
  private void printColor() {
	System.out.println("红色");
}
  //访问修饰符号是protected 表示受保护的
 protected  int printColor(String color) {
	System.out.println(color);
	return 1;
}
 
 public  void printColor(int count) {
	 for(int i=0;i<=count;i++){
	System.out.println("红色");
	}
}
 
//访问修饰符号是(default) 默认的，
 //方法的重载：在同一个类中，方法名相同，参数列表不同(参数个数不同、参数类型不同、类型的顺序不同)；与访问修饰符号无关，与返回值类型无关
 void printColor(String color,int count) {
	 for(int i=0;i<count;i++){
	System.out.println(color);
	 }
}
 void printColor(int count,String color) {
	 for(int i=0;i<count;i++){
	System.out.println(color);
	 } 
}
 
 
	public static void main(String[] args) {
		//没有static 修饰方法称为实例方法或非静态方法
		//使用static 修饰的方法称为类方法或静态方法
        //实例方法必须通过实例对象来访问
		//类与对象的关系，类实例化
		MethodsClass mClass=new  MethodsClass();//类型的实例化
		//mClass：是一个实例变量的引用，常称为类实例对象   ；new  MethodsClass()是对象
		//对象调用方法或属性/实例变量的操作符号是一个点号（·）
		//方法重载后，再调用方法是，jvm 能够根据参数类型列表自动识别并调用不同的方法
		//在同一个package里面可以调用任何的修饰符
		//为什么要重载？方便进行功能维护和扩展，提供程序的课维护性和可扩展性
		mClass.printColor(); 
		mClass.printColor("蓝色");
		mClass.printColor("绿色",3);
		mClass.printColor(4,"橙色");
		mClass.printColor(5);  //在方法调用时，实际传递的参数叫实参；
		int a=5;
		mClass.printColor(5);//a是实参；实参是保存有实际数据值的 变量   或   数据值
		
		//静态方法可以使用类名.方法名进行调用
		MethodsClass.printColor('黑'); //char只能有一个字符，并且使用单引号括起来
		//如果在同一个类中可以省略类名
		printColor('黑');
		
	}//mian

}
